/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

/**
 *
 * @author Edgar
 */
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import modelo.total;
import modelo.equipo;

public class DAOEquipo {

    Connection con = null;
    //inicio metodo para conectarme a mi base de datos

    public Connection conectar() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            System.out.println("No se pudo cargar el driver para mysql");
        }
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/geneticos", "root", "");
            //jdbc:mysql://localhost/agenda", "USUARIO_BD", "PASSWORD_BD");

        } catch (SQLException ex) {
            System.out.println("No se pudo conectar a la base de datos");
        }
        return con;
    }

    ///metodo para extraer los datos de mi bdd
    public ArrayList<equipo> leerTodos() {
        ArrayList<equipo> equipos = new ArrayList();
        try {
            Connection c = this.conectar();
            Statement s = c.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM equipo");
            while (rs.next()) {
                equipo a = new equipo();
                a.setNombre(rs.getString("nombre"));
                a.setRanking(rs.getInt("ranking"));
                a.setTitulos(rs.getInt("titulos"));
                a.setPartido1(rs.getString("partido1"));
                a.setPartido2(rs.getString("partido2"));
                a.setPartido3(rs.getString("partido3"));
                equipos.add(a);

            }
        } catch (Exception e) {
        }
        return equipos;
    }
    ///metodo para obtener un arraylist del ranking de los equipos

    public List leerRanking() {
        ArrayList ranking = new ArrayList();
        try {
            Connection c = this.conectar();
            Statement s = c.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM equipo");
            while (rs.next()) {
                ranking.add(rs.getInt("ranking"));
            }
        } catch (Exception e) {
        }
        return ranking;
    }
    //método para llenar el Area de texto 2

    public ArrayList<equipo> llenart2(String equipo) {
        ArrayList<equipo> equipos = new ArrayList<equipo>();
        try {
            Connection c = this.conectar();
            Statement s = c.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM equipo");
            while (rs.next()) {
                equipo a = new equipo();
                if (rs.getString("nombre").equals(equipo)) {
                    a.setNombre(rs.getString("nombre"));
                    a.setRanking(rs.getInt("ranking"));
                    a.setTitulos(rs.getInt("titulos"));
                    a.setPartido1(rs.getString("partido1"));
                    a.setPartido2(rs.getString("partido2"));
                    a.setPartido3(rs.getString("partido3"));
                    equipos.add(a);
                    break;
                }

            }
        } catch (Exception e) {
        }
        return equipos;
    }
    ///metodo para llenar la lista con score
    //ArrayList<Score>

    public ArrayList<total> scoreEquipos() {
        ArrayList<total> equipos = new ArrayList<total>();
        try {
            Connection c = this.conectar();
            Statement s = c.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM equipo");
            while (rs.next()) {
                int cont = 0;
                total a = new total();
                a.setNombre(rs.getString("nombre"));
                
                //agrego valores segun el ranking
                if (rs.getInt("ranking") >= 1 & rs.getInt("ranking") <= 10) {
                    a.setRanking(6);
                }
                if (rs.getInt("ranking") >= 11 & rs.getInt("ranking") <= 20) {
                    a.setRanking(5);
                }
                if (rs.getInt("ranking") >= 21 & rs.getInt("ranking") <= 30) {
                    a.setRanking(4);
                }
                if (rs.getInt("ranking") >= 31 & rs.getInt("ranking") <= 40) {
                    a.setRanking(3);
                }
                if (rs.getInt("ranking") >= 41 & rs.getInt("ranking") <= 50) {
                    a.setRanking(2);
                }
                if (rs.getInt("ranking") >= 51 & rs.getInt("ranking") <= 60) {
                    a.setRanking(1);
                }
                //titulos
                a.setTitulos(rs.getInt("titulos"));
                //partidoos
                cont = cont + this.asignar(rs.getString("partido1"));
                cont = cont + this.asignar(rs.getString("partido2"));
                cont = cont + this.asignar(rs.getString("partido3"));
                a.setPuntos(cont);
                a.setScore(a.getPuntos() + a.getTitulos() + a.getRanking());
                equipos.add(a);

            }
        } catch (Exception e) {
        }
        int a = 1;
        String y = "";
        for (total nom : equipos) {//para imprimir la lista original
            //System.out.println("Equipo: " + a + nom);
            //a++;
            y = y.concat(nom.toString());
        }
        return equipos;
    }
    ///método para asignar valores segun el partido

    public int asignar(String partido) {
        int cnt = 0;
        if (partido.equals("triunfo")) {
            cnt = cnt + 1;
        }
        if (partido.equals("empate")) {
            cnt = cnt + 0;
        }
        if (partido.equals("derrota")) {
            cnt = cnt - 1;
        }
        return cnt;
    }

    //metodo para obtener el Score
    public ArrayList<String> leerScore() {
        ArrayList score = new ArrayList();
        for (total d : this.scoreEquipos()) {
            score.add(d.getNombre());
            //System.out.println(d.getNombre());
        }
        return score;
    }

    public void modificar(String equipo, String ranking,String titulos,String p1, String p2, String p3) {
        try {
            Connection c = this.conectar();
            Statement s = c.createStatement();
            //int cantidad=s.executeUpdate("update equipo set ranking='" + ranking + "'," + " where nombre="+equipo);
            int cantidad = s.executeUpdate("update equipo set ranking='"+ranking+"'"+" where nombre="+"'"+equipo+"'");
            int cantidad2 = s.executeUpdate("update equipo set titulos='"+titulos+"'"+" where nombre="+"'"+equipo+"'");
            int cantidad3 = s.executeUpdate("update equipo set partido1='"+p1+"'"+" where nombre="+"'"+equipo+"'");
            int cantidad4 = s.executeUpdate("update equipo set partido2='"+p2+"'"+" where nombre="+"'"+equipo+"'");
            int cantidad5 = s.executeUpdate("update equipo set partido3='"+p3+"'"+" where nombre="+"'"+equipo+"'");
            System.out.println(cantidad);
        } catch (Exception e) {
        }
    }
}
